package com.zrh.jsd.service.studydemo.java8stream;

// 参数的传递
public class SimpleLambdaTest {
    // 1、前置条件，必须是函数式接口
    // 2、参数的传递
    public static void main(String[] args) {
        // 参数可以忽略类型
        Format format = (name,age) -> String.format("name:%s age:%d",name,age);
        run(format);

        Format1 format1 = name -> {
            return String.format("name:%s", name);
        };
        run1(format1);

        // 参数只有一个时，可以省略括号
        // 单行表达式 省略掉return ： Format1 format1 = name -> String.format("name:%s",name);
        Format1 format2 = name -> String.format("name:%s",name);
        run1(format2);

        // 代码块
        run1(SimpleLambdaTest::doFormat); //静态方法引用
        run1(new SimpleLambdaTest()::doFormat2); // 普通方法引用
    }

    public static String doFormat(String param2){
        return "name：" + param2;
    }
    public String doFormat2(String param2){
        return "name：" + param2;
    }
    public static void run(Format format){
        format.run("张三",18);
    }
    public static void run1(Format1 format1){
        format1.run1("张三");
    }
    @FunctionalInterface
    public interface Format{
        String run(String name ,int age);
    }
    @FunctionalInterface
    public interface Format1{
        String run1(String name);
    }

}
